#include <iostream>

class Test
{
public:
    Test()
    {
        std::cout<<"构造函数\n";
    }

    Test(const Test& t)
    {
        std::cout<<"深拷贝构造函数\n";
    }
    void operator=(const Test& t)
    {
        std::cout<<"赋值运算符深度重载\n";
    }
    ~Test()
    {
        std::cout<<"析构函数\n";
    }
};

//RVO优化：return value optlite 返回值优化：返回局部对象不会发生拷贝
Test func(Test& t)//形参不能被优化
{
    Test t1;
    return t1;
}

int main()
{
    //将亡值：马上要释放的值
    // 将亡值也是右值,右值的内存可以直接被拿走
    Test t;
    Test t2 = func(t); //匿名对象 ： 生命周期只有一行的临时对象

    return 0;
}